package handler

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// 拦截器中间件
func HTTPInterceptor() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 拦截器
		// 1. 从请求头中获取token
		//校验token
		req := struct {
			Phone string `json:"username"`
			Token string `json:"token"`
		}{
			Phone: c.Query("username"),
			Token: c.Query("token"),
		}
		token := req.Token
		if token == "" {
			
			c.JSON(http.StatusOK, gin.H{
				"msg": "token is empty",
			})
			return
		}
		// 2. 从数据库中获取token
		isValid := IsTokenValid(token)
		if !isValid {
			c.Abort()
			c.JSON(http.StatusOK, gin.H{
				"msg": "token is invalid",
			})
			return
		}
		// 3. 如果token有效，继续处理请求
		c.Next()
	}
}

func IsTokenValid(token string) bool {
	if len(token) != 40 {
		return false
	}
	// TODO: 判断token的时效性，是否过期
	// TODO: 从数据库表tbl_user_token查询username对应的token信息
	// TODO: 对比两个token是否一致
	return true
}
